<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>文章列表</title>
    <link rel="stylesheet" href="./libs/bootstrap/css/bootstrap.min.css" />
    <link rel="stylesheet" href="css/reset.css" />
    <link rel="stylesheet" href="css/iconfont.css" />
    <link rel="stylesheet" href="css/main.css" />
    <script src="./libs/jquery-1.12.4.min.js"></script>
    <script src="./libs/bootstrap/js/bootstrap.min.js"></script>
    <!-- 引入模板引擎js文件 -->
    <script src="./libs/template-web.js"></script>
  </head>

  <body>
    <div class="container-fluid">
      <div class="common_title">文章类别管理</div>
      <div class="container-fluid common_con">
        <table class="table table-striped table-bordered table-hover mp20 category_table">
          <thead>
            <tr>
              <th>名称</th>
              <th>Slug</th>
              <th class="text-center" width="100">操作</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>奇趣事</td>
              <td>funny</td>
              <td class="text-center">
                <a href="javascript:void(0)" data-toggle="modal" class="btn btn-info btn-xs">编辑</a>
                <a href="javascript:void(0)" class="btn btn-danger btn-xs">删除</a>
              </td>
            </tr>
          </tbody>
          <tfoot>
            <tr>
              <td colspan="3" class="text-center">
                <button class="btn btn-success" id="xinzengfenlei" data-toggle="modal" data-target="#myModal">新增分类</button>
              </td>
            </tr>
          </tfoot>
        </table>
      </div>
    </div>

    <!-- 模态框静态代码 -->
    <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel">
      <div class="modal-dialog" role="document">
        <div class="modal-content">
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <h4 class="modal-title" id="exampleModalLabel">New message</h4>
          </div>
          <div class="modal-body">
            <form>
              <div class="form-group">
                <label for="recipient-name" class="control-label">分类名称:</label>
                <input type="text" class="form-control" id="recipient-name" />
              </div>
              <div class="form-group">
                <label for="message-text" class="control-label">分类别名:</label>
                <input type="text" class="form-control" id="message-text" />
              </div>
            </form>
          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
            <button type="button" class="btn btn-primary btn-change">Send message</button>
          </div>
        </div>
      </div>
    </div>
  </body>
</html>
<script src="./libs/https.js"></script>
<!-- 准备文章类别模板 -->
<script type="text/html" id="tpl-category">
  {{each}}
  <tr>
    <td>{{$value.name}}</td>
    <td>{{$value.slug}}</td>
    <td class="text-center">
      <button dataid="{{$value.id}}" data-toggle="modal" data-target="#myModal" class=" btn btn-info btn-xs">编辑</button>
      <a href="javascript:void(0)" dataid="{{$value.id}}" class="btn btn-danger btn-xs btn-del">删除</a>
    </td>
  </tr>
  {{/each}}
</script>
<script>
  $(function () {
    // 1. 封装函数: 获得文章类别,加载页面结构
    function loadData() {
      // 2. 发起ajax请求,获得数据
      $.ajax({
        type: 'get',
        url: BigNew.category_list,
        success: function (backData) {
          // console.log(backData);
          if (backData.code == 200) {
            // 3. 获得文章类别,利用模板引擎生成结构
            let categoryData = backData.data
            let htmlStr = template('tpl-category', categoryData)
            $('tbody').html(htmlStr)
          }
        },
      })
    }
    loadData()

    // 4. 监听模态框,区分是哪个按钮触发模态框显示
    // 当模态框显示的时候,会执行以下函数
    $('#myModal').on('show.bs.modal', function (e) {
      // 5. 获得触发模态框显示的元素(按钮)
      // e.relatedTarget: 获得触发的按钮
      // console.log(e.relatedTarget);

      // 6. 根据不同的按钮,设置模态框的文本样式
      if ($(e.relatedTarget).text() == '新增分类') {
        // 新增触发
        $('.modal-title').text('新增分类')
        $('.btn-change').text('新增')

        // 将内容清空
        $('#recipient-name').val('')
        $('#message-text').val('')
      } else {
        // 编辑触发
        $('.modal-title').text('编辑分类')
        $('.btn-change').text('编辑')

        // 7. 发起ajax请求,获得指定的类别数据
        // dataid是全局变量,后面的函数才可以使用
        window.dataid = $(e.relatedTarget).attr('dataid')
        $.ajax({
          type: 'get',
          url: BigNew.category_search,
          data: {
            id: dataid,
          },
          success: function (backData) {
            // console.log(backData);
            if (backData.code == 200) {
              // 8. 将指定类别的数据渲染到结构中
              $('#recipient-name').val(backData.data[0].name)
              $('#message-text').val(backData.data[0].slug)
            }
          },
        })
      }
    })

    // 9. 给模态框按钮设置点击事件
    $('.btn-change').on('click', function (e) {
      // 10. 区分按钮的目的
      // 11. 获得用户输入的内容
      let name = $('#recipient-name').val().trim()
      let slug = $('#message-text').val().trim()

      if ($(this).text() == '新增') {
        // 新增功能
        // 12. 发起ajax请求,新增分类数据
        $.ajax({
          type: 'post',
          url: BigNew.category_add,
          data: {
            name: name,
            slug: slug,
          },
          success: function (backData) {
            if (backData.code == 201) {
              // 13. 关闭模态框, 并且重新获得数据
              $('#myModal').modal('hide')
              loadData()
            }
          },
        })
      } else {
        // 编辑功能
        // 14. 发起ajax请求,修改分类信息
        $.ajax({
          type: 'post',
          url: BigNew.category_edit,
          data: {
            name: name,
            slug: slug,
            id: dataid,
          },
          success: function (backData) {
            if (backData.code == 200) {
              $('#myModal').modal('hide')
              loadData()
            }
          },
        })
      }
    })

    // 15. 给所有删除按钮设置委托点击
    $('tbody').on('click', '.btn-del', function () {
        // 16. 获得当前按钮的dataid
        let dataid = $(this).attr('dataid');
        // 17. 发起ajax请求,删除指定数据
        $.ajax({
            type: 'post',
            url: BigNew.category_delete,
            data: {
                id: dataid
            },
            success: function(backData) {
                // console.log(backData);
                if (backData.code == 204) {
                     alert(backData.msg);
                     loadData();
                }
            }
        })
    })
  })
</script>
